home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 32 / Mac Magazin and MacEasy Magazine CD - Issue 32.iso / Grafik & Text / OzTeX3.0 / PS-files / TEXTtoPS.pro < prev   
Text File  |  1994-12-10  |  6KB  |  181 lines

  1. %!
  2. % This is the prolog used by OzTeX to print a Macintosh text file.
  3. % Every character after this file will be treated as a printing character
  4. % (or control character) instead of being interpreted as PostScript.
  5.  
  6. % Feel free to change the following parameters:
  7.  
  8. /tabwidth 3 def        % tab setting
  9. /maxline 66 def        % maximum lines per page
  10. /interline -11 def    % baseline skip
  11. /ptsize 10 def            % point size for text
  12.  
  13. /setlocation
  14. { 72 0 translate        % 1in left margin
  15.   0 764 moveto            % start of top line; assumes A4 paper
  16.   /line 0 def            % initialize line counter
  17.   /char 0 def            % initialize char counter
  18. } bind def
  19.  
  20. % The following table comes from Inside Mac I-221:
  21. %
  22. %        0 1 2 3 4 5 6 7 8 9 A B C D E F
  23. %    0 | | | |0|@|P|`|p|Ä|ê|†|∞|¿|–| | |
  24. %    1 | | |!|1|A|Q|a|q|Å|ë|°|±|¡|—| | |
  25. %    2 | | |"|2|B|R|b|r|Ç|í|¢|≤|¬|“| | |
  26. %    3 | | |#|3|C|S|c|s|É|ì|£|≥|√|”| | |
  27. %    4 | | |$|4|D|T|d|t|Ñ|î|§|¥|ƒ|‘| | |
  28. %    5 | | |%|5|E|U|e|u|Ö|ï|•|µ|≈|’| | |
  29. %    6 | | |&|6|F|V|f|v|Ü|ñ|¶|∂|Δ|÷| | |
  30. %    7 | | |'|7|G|W|g|w|á|ó|ß|∑|«|◊| | |
  31. %    8 | | |(|8|H|X|h|x|à|ò|®|∏|»|ÿ| | |
  32. %    9 | | |)|9|I|Y|i|y|â|ô|©|π|…| | | |
  33. %    A | | |*|:|J|Z|j|z|ä|ö|™|∫| | | | |
  34. %    B | | |+|;|K|[|k|{|ã|õ|´|ª|À| | | |
  35. %    C | | |,|<|L|\|l|||å|ú|¨|º|Ã| | | |
  36. %    D | | |-|=|M|]|m|}|ç|ù|≠|Ω|Õ| | | |
  37. %    E | | |.|>|N|^|n|~|é|û|Æ|æ|Œ| | | |
  38. %    F | | |/|?|O|_|o| |è|ü|Ø|ø|œ| | | |
  39. %
  40. % To print all these characters we need to create an encoding vector
  41. % better suited to a Macintosh text font:
  42.  
  43. /macvec 256 array def
  44. /NUL/SOH/STX/ETX/EOT/ENQ/ACK/BEL/BS/HT/LF/VT/FF/CR/SO/SI
  45. /DLE/DC1/DC2/DC3/DC4/NAK/SYN/ETB/CAN/EM/SUB/ESC/FS/GS/RS/US
  46. macvec 0 32 getinterval astore pop
  47. macvec 32 /Courier findfont /Encoding get 32 96 getinterval putinterval
  48. macvec dup 39 /quotesingle put 96 /grave put
  49. /Adieresis/Aring/Ccedilla/Eacute
  50. /Ntilde/Odieresis/Udieresis/aacute
  51. /agrave/acircumflex/adieresis/atilde
  52. /aring/ccedilla/eacute/egrave
  53. /ecircumflex/edieresis/iacute/igrave
  54. /icircumflex/idieresis/ntilde/oacute
  55. /ograve/ocircumflex/odieresis/otilde
  56. /uacute/ugrave/ucircumflex/udieresis
  57. /dagger/degree/cent/sterling
  58. /section/bullet/paragraph/germandbls
  59. /registered/copyright/trademark/acute
  60. /dieresis/notequal/AE/Oslash
  61. /infinity/plusminus/lessequal/greaterequal
  62. /yen/mu/partialdiff/summation
  63. /product/pi/integral/ordfeminine
  64. /ordmasculine/Omega/ae/oslash
  65. /questiondown/exclamdown/logicalnot/radical
  66. /florin/approxequal/Delta/guillemotleft
  67. /guillemotright/ellipsis/space/Agrave
  68. /Atilde/Otilde/OE/oe
  69. /endash/emdash/quotedblleft/quotedblright
  70. /quoteleft/quoteright/divide/lozenge
  71. /ydieresis/Ydieresis/fraction/currency
  72. /guilsinglleft/guilsinglright/fi/fl
  73. /daggerdbl/periodcentered/quotesinglbase/quotedblbase
  74. /perthousand/Acircumflex/Ecircumflex/Aacute
  75. /Edieresis/Egrave/Iacute/Icircumflex
  76. /Idieresis/Igrave/Oacute/Ocircumflex
  77. /apple/Ograve/Uacute/Ucircumflex
  78. /Ugrave/dotlessi/circumflex/tilde
  79. /macron/breve/dotaccent/ring
  80. /cedilla/hungarumlaut/ogonek/caron
  81. macvec 128 128 getinterval astore pop
  82.  
  83. % Note that /AE /ae /OE /oe don't exist in early model LaserWriters.
  84. % /Courier findfont /CharStrings get { pop == (\r) print flush } forall
  85. % We could do something about this but it isn't worth the effort.
  86.  
  87. % Create a copy of Courier but use the above encoding vector:
  88.  
  89. /Courier findfont
  90. dup length dict /newdict exch def
  91. { 1 index /FID ne
  92.   { newdict 3 1 roll put }
  93.   { pop pop }
  94.   ifelse
  95. } forall
  96. newdict /Encoding macvec put
  97. /NewCourier newdict definefont ptsize scalefont setfont
  98.  
  99. % Associate every possible character code with a default procedure:
  100.  
  101. /charprocs [ 256 {/showchar cvx} repeat ] def
  102.  
  103. /showchar
  104. { currentchar 0 thischar put        % put thischar into 1-char string
  105.   /char char 1 add def                % increment char counter
  106.   currentchar show
  107. } bind def
  108.  
  109. % We have to switch to Symbol font for some characters
  110. % (which look better if we slightly reduce their point size):
  111.  
  112. /symfont /Symbol findfont ptsize 1 sub scalefont def
  113.  
  114. /symshow
  115. { gsave symfont setfont show grestore
  116.   ( ) show /char char 1 add def
  117. } bind def
  118.  
  119. % See Adobe's red book, p.256--57 for following octal values:
  120.  
  121. charprocs 161 { (\260) symshow } put    % /degree
  122. charprocs 168 { (\342) symshow } put    % /registered
  123. charprocs 169 { (\343) symshow } put    % /copyright
  124. charprocs 170 { (\344) symshow } put    % /trademark
  125. charprocs 173 { (\271) symshow } put    % /notequal
  126. charprocs 176 { (\245) symshow } put    % /infinity
  127. charprocs 177 { (\261) symshow } put    % /plusminus
  128. charprocs 178 { (\243) symshow } put    % /lessequal
  129. charprocs 179 { (\263) symshow } put    % /greaterequal
  130. charprocs 181 { (\155) symshow } put    % /mu
  131. charprocs 182 { (\266) symshow } put    % /partialdiff
  132. charprocs 183 { (\123) symshow } put    % /Sigma
  133. charprocs 184 { (\120) symshow } put    % /Pi
  134. charprocs 185 { (\160) symshow } put    % /pi
  135. charprocs 186 { (\362) symshow } put    % /integral
  136. charprocs 189 { (\127) symshow } put    % /Omega
  137. charprocs 194 { (\330) symshow } put    % /logicalnot
  138. charprocs 195 { (\326) symshow } put    % /radical
  139. charprocs 197 { (\273) symshow } put    % /approxequal
  140. charprocs 198 { (\104) symshow } put    % /Delta
  141. charprocs 214 { (\270) symshow } put    % /divide
  142. charprocs 215 { (\340) symshow } put    % /lozenge
  143.  
  144. % Some control characters need to be handled differently:
  145.  
  146. charprocs 9   /TAB    cvx put
  147. charprocs 12  /FF        cvx put
  148. charprocs 13  /CR        cvx put
  149.  
  150. /TAB
  151. { { ( ) show /char char 1 add def
  152.      char tabwidth mod 0 eq { exit } if
  153.   } loop
  154. } bind def
  155.  
  156. /FF
  157. { line 0 gt { showpage setlocation } if
  158. } bind def
  159.  
  160. /CR                                                                % called when eol seen
  161. { /char 0 def                                                    % reset char counter
  162.   /line line 1 add def                                        % increment line counter
  163.   line maxline eq                                                % line = max lines per page?
  164.       { FF }                                                        % if so, show page
  165.       { currentpoint pop neg interline rmoveto }        % else start next line
  166.   ifelse
  167. } bind def
  168.  
  169. /currentchar 1 string def
  170. setlocation
  171.  
  172. /charloop
  173. { { currentfile read not {exit} if    % get next char; exit if no more
  174.     /thischar exch def                    % thischar is used in showchar
  175.     charprocs thischar get exec        % execute appropriate procedure
  176.   } loop
  177.   line 0 gt { showpage } if            % flush last page if necessary
  178. } def
  179.  
  180. charloop
  181.